package jackey.tool.sql;

import java.sql.*;

/**
 * 初始化连接数据库
 * 连接数据库必须拥有这个类
 * @author zqkey
 *
 */
public class SQLHelper{
	
    /**
     * 连接数据库对象
     */
    Connection con = null;

    /**
     * 执行语句statement对象
     */
    Statement stat;
    
    /**
     * 初始化连接
     */
    public SQLHelper(){
    	try{
    		String classname = "com.mysql.jdbc.Driver";
    		String url = "jdbc:mysql://127.0.0.1:3306/ftp";
    		String user = "root";
    		String password = "111111";
    		Class.forName(classname);
			con = DriverManager.getConnection(url, user, password);
			System.out.println("----access mysql success----");
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    
    /**
     * 初始化连接数据库
     * @param className 驱动名 
     * @param url 数据库地址及数据库名
     * @param user 数据库用户名
     * @param password 用户名的密码
     */
    public SQLHelper(String className, String url, String user, String password) {
    	try{
    		Class.forName(className);
    		con = DriverManager.getConnection(url, user, password);
    		System.out.println("----access mysql success----");
    	}catch(Exception e) {
    		e.printStackTrace();
    	}
    }
    
    /**
     * 查询数据库
     * @param sql SQL语句
     * @return ResuletSet 查询结果
     */
    public ResultSet query(String sql){
    	try{
    		System.out.println(sql);
    		stat = con.createStatement();
            ResultSet rs = stat.executeQuery(sql);
            return rs;
    	}catch(SQLException e){
    		System.out.println(e.getMessage());
    		return null;
    	}
    }
   
    /**
     * 通过参数更新数据库
     * @param sql SQL语句
     * @return 返回执行的记录行数
     */
    public int update(String sql){
    	try{
    		System.out.println(sql);
    		stat = con.createStatement();
            int count = stat.executeUpdate(sql);
            return count;
    	}catch(SQLException e){
    		System.out.println(e.getMessage());
    		return -1;
    	}
    }
    
    /**
     * 关闭数据库连接
     */
    public void close(){
    	try{
    		stat.close();
    		con.close();
    	}catch(SQLException e){
    		System.out.println(e.getMessage());
    	}
    }
}
